Expand description
This crate provides a powerful and intuitive way to perform string brace expansion. Brace expansion is a feature commonly found in shells and text processing tools, allowing you to generate all possible combinations of strings specified within curly braces.
Features
-
Simple and Easy-to-Use: With the bracoxide crate, expanding brace patterns in strings becomes a breeze. Just pass in your input string, and the crate will generate all possible combinations for you.
-
Flexible Brace Expansion: The crate supports various brace expansion patterns, including numeric ranges ({0..9}), comma-separated options ({red,green,blue}), nested expansions ({a{b,c}d}, {x{1..3},y{4..6}}), and more.
-
Robust Error Handling: The crate provides detailed error handling, allowing you to catch and handle any issues that may arise during the tokenization and expansion process.
-
Lightweight and Fast: Designed to be efficient and performant, ensuring quick and reliable string expansion operations.
Getting Started
To start using the bracoxide crate, add it as a dependency in your Cargo.toml
:
[dependencies]
bracoxide = "0.1.2"
use bracoxide::explode;
fn main() {
let content = "foo{1..3}bar";
match explode(content) {
Ok(expanded) => {
// 1. `foo1bar`
// 2. `foo2bar`
// 3. `foo3bar`
println!("Expanded patterns: {:?}", expanded);
}
Err(error) => {
eprintln!("Error occurred: {:?}", error);
}
}
}
We hope you find the str expand crate to be a valuable tool in your Rust projects. Happy string expansion!
Modules
- Provides functions and types for parsing tokens into an abstract syntax tree (AST).
Enums
- An error type representing the failure to expand a parsed node.
- Errors that can occur during the Brace Expansion process.
Functions
- Bracoxidize the provided content by tokenizing, parsing, and expanding brace patterns.
- Expands the given parsed node into a vector of strings representing the expanded values.
- Same functionality as bracoxidize but with explosive materials. This crates’ all Error types (except the OxidizationError) implements std::error::Error trait. Why not get all the benefits from it?